1. Field of the Invention
The present invention relates to load distribution systems and more particularly, to an improved NAT (Network Address Translation and Port Mapping) method and system for distributing data packets from clients in a website system.
2. Discussion of the Related Art
Network Address Translation and Port Mapping (also known as “NAT”) is the translation of an Internet Protocol address (IP address) and port used within a first network, to a different IP address and port used within a second network. In a conventional NAT system, a single NAT machine and a plurality of identical servers are provided as part of a website system of a website provider. Since the servers are identical, each server is capable of processing data packets from different client devices or PCs and thus, client load can be distributed among these servers. A data packet from a client device (hereinafter “client packets”) can contain a request for a TCP/IP connection for establishing a communications path between the client device and the website system, a request for a particular website or page from the website system, or any other data or request prepared by the client device.
FIG. 1 shows a block diagram of such a conventional NAT system. As shown in FIG. 1, a single NAT machine 10 functions as a gateway to a plurality of identical servers 20 in a website system. The NAT machine 10 includes an inbound translation module 12 and an outbound translation module 14. Each of the servers 20 includes application program(s) 22.
When a particular client wishes to access a site provided by the website system, the client operates a client device 30 which transmits a client packet to the NAT machine 10 via the Internet (not shown for the sake of brevity). This client packet may contain a request for a TCP/IP connection or a request for a page if the connection has been already established. The inbound translation module 12 receives the client packet and performs an inbound translation on the received packet. The inbound translation involves determining which of the servers 20 will receive the client packet based on predetermined criteria and modifying the header of the client packet to identify the current sender and receiver of the packet.
The server 20 receives the translated client packet from the NAT machine 10, and the application program 22 of the server 20 processes the client packet by preparing a response packet. The response packet may contain an acknowledgment of the client packet, requested page files, or other data. The server 20 sends the response packet to the outbound translation module 14 of the NAT machine 10, which in turn performs an outbound translation on the response packet by modifying the header of the response packet to identify the current sender and receiver of the packet. Once the response packet is translated, it is transmitted to the requesting client device 30 which processes the received packet according to known techniques. Any client packet directed to the NAT machine 10 is processed in this manner.
In the conventional NAT system, however, a problem of traffic “bottleneck” exists at the NAT machine because all incoming packets from the client devices and all outgoing packets from the servers pass through the NAT machine. The traffic bottleneck problem limits severely the total capacity of the system. Furthermore, since the size of the outgoing packets from the servers is typically much larger than the size of the incoming packets from the client devices, the traffic bottleneck problem causes significant delays in the transmission of response packets to the client devices and data can be lost due to lengthy response times. Due to these problems with the conventional NAT systems, customers are often dissatisfied with the service offered by the website system and the website providers can lose valuable customers, forfeiting profit and jeopardizing professional reputation.
Therefore, a need exists for a technique which solves the traffic bottleneck problems of the conventional NAT systems, avoids communication delays and improves the performance of a website system. Furthermore, this technique should be implementable without requiring signification modification to the existing NAT systems to be cost effective.